<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

//include_once $_SERVER['DOCUMENT_ROOT'] . "/DivSoft/Basicas/usuario/usuario.php";
//include_once $_SERVER['DOCUMENT_ROOT']."/DivSoft/Util/variareis.php";

/* $ds = DIRECTORY_SEPARATOR;
  $path = $_SERVER['DOCUMENT_ROOT'] . $ds . "DivSoft" . $ds . "Basicas" . $ds . "usuario" . $ds . "usuario.php";
  include_once $path;
 */
class DMysql {

    var $mysql = null;
    var $usuarioTable = null;
    var $companyTable = null;
    var $professorTable = null;
    var $usuarioCache = null;
    var $empresaCache = null;

    /**
     * Constutor da classe
     */
    function __construct() {
        $this->mysql = new mysqli('localhost', 'root', '', 'div_soft');
        $this->usuarioTable = "usuarios";
        $this->companyTable = "empresas";
        $this->professorTable = "professor";
    }

    function __destruct() {
        //$this->empresaCache = null;
        //$this->mysql->close();
    }

    //TODO modificar para retornar array com os dados do usuario!
    function loadUserData($cpf) {
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');
        if ($result = $mysqli->query("SELECT * FROM user WHERE cpf=" . $cpf)) {
            while ($row = $result->fetch_object()) {
                return $row;
            }
        }
    }

    function query($query) {
        //$this->mysql = new mysqli('localhost', 'root', '', 'div_soft');
        $this->mysql->connect();
        $query = $this->anti_injection($query);
        $resultado = $mysqli->query($query);
        return $resultado;
    }

    function hasCPF($cpf) {
        $cpf = $this->anti_injection($cpf);
        //$mysql = new mysqli('localhost', 'root', '', 'div_soft');
        $query = "SELECT cpf from $this->usuarioTable WHERE cpf = '$cpf'";
        $result = $this->mysql->query($query);
        $hasCPF = false;
        if ($this->mysql->affected_rows != 0) {
            $hasCPF = true;
        }
        return $hasCPF;
    }

    function deleteUser($cpf) {
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');
        $result = null;
        $cpf = $this->anti_injection($cpf);
        $query = "DELETE FROM `$this->usuarioTable` WHERE cpf='$cpf'";
        $result = $mysqli->query($query);
        return $result;
    }

    //TODO adicionar funcao de anti_injection
    function saveUser($usuario) {
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');

        if (mysqli_connect_errno ()) {
            printf("Sem conexao com o banco de dados: %s\n", mysqli_connect_error());
            exit();
        }

        $sql = "INSERT INTO `usuarios` (`nome`, `username`,
            `cpf`, `rg`, `curso`, `periodo`, `endereco`,
            `bairro`, `cidade`, `cep`, `telResidencial`,
            `celular`, `email`, `nivel`) VALUES ('" . $usuario['nome'] . "',
                '" . $usuario['cpf'] . "', '" . $usuario['cpf'] . "',
                '" . $usuario['rg'] . "', '" . $usuario['curso'] . "',
                '" . $usuario['periodo'] . "', '" . $usuario['endereco'] . "',
                '" . $usuario['bairro'] . "', '" . $usuario['cidade'] . "',
                '" . $usuario['cep'] . "', '" . $usuario['telRes'] . "',
                '" . $usuario['celular'] . "', '" . $usuario['email'] . "',
                '" . $usuario['nivel'] . "');";
        $mysqli->query($sql) or die($mysqli->error);
        $mysqli->close();
    }

    //TODO função para salvar empresa no banco
    function saveCompany($empresa) {
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');

        if (mysqli_connect_errno ()) {
            printf("Sem conexao com o banco de dados: %s\n", mysqli_connect_error());
            exit();
        }

        $query = "INSERT INTO `empresas` (
            `cnpj`, `razao_social`,
            `endereco`, `bairro`,
            `cidade`, `cep`,
            `contato_rh`, `telefone`)
             VALUES (
             '" . $empresa['cnpj'] . "', '" . $empresa['razao_social'] . "',
             '" . $empresa['endereco'] . "','" . $empresa['bairro'] . "',
             '" . $empresa['cidade'] . "','" . $empresa['cep'] . "',
             '" . $empresa['contato_rh'] . "','" . $empresa['telefone'] . "'
             )";

        return $mysqli->query($query);
    }

    //TODO terminar updateUser
    function updateUser($array, $cpf) {
        

        $nome = $this->anti_injection($array['nome']);
        $username = $this->anti_injection($array['username']);
        $senha = $this->anti_injection($array['senha']);
        $curso = $this->anti_injection($array['curso']);
        $periodo = $this->anti_injection($array['periodo']);
        $endereco = $this->anti_injection($array['endereco']);
        $bairro = $this->anti_injection($array['bairro']);
        $cidade = $this->anti_injection($array['cidade']);
        $cep = $this->anti_injection($array['cep']);
        $telResidencial = $this->anti_injection($array['telResidencial']);
        $celular = $this->anti_injection($array['celular']);
        $email = $this->anti_injection($array['email']);

        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');

        $update = "UPDATE $this->usuarioTable SET
                nome = '$nome',
                username = '$username',
                senha = '$senha',
                curso = '$curso',
                periodo = '$periodo',
                endereco = '$endereco',
                bairro = '$bairro',
                cidade = '$cidade',
                cep = '$cep',
                telResidencial = '$telResidencial',
                celular = '$celular',
                email = '$email'
                WHERE cpf = $cpf";
        

        $retorno = $mysqli->query($update);
        return $retorno;
    }

    /**
     * Retorna o usuário do banco, null caso contrário
     * @param <type> $cpf
     * @param <type> $senha
     */
    function verifyUser($cpf, $senha) {
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');
        $retorno = null;
        $cpf = $this->anti_injection($cpf);
        $senha = $this->anti_injection($senha);
        $query = "SELECT `nome`, `nivel`, `cpf` FROM `$this->usuarioTable` WHERE cpf = '$cpf' AND senha = '$senha';";
        if ($result = $mysqli->query($query)) {
            $row = $result->fetch_object();
            $nome = $row->nome;
            $nivel = $row->nivel;
            $retorno = array('nome' => $row->nome, 'nivel' => $row->nivel, 'cpf'=>$row->cpf);
        }
        $mysqli->close();
        return $retorno;
    }

    private function anti_injection($sql) {
        $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"), "", $sql);
        $sql = trim($sql);
        $sql = strip_tags($sql);
        $sql = (get_magic_quotes_gpc()) ? $sql : addslashes($sql);
        return $sql;
    }

    function getUser($cpf){
        $cpf = $this->anti_injection($cpf);
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');
        $table = $this->usuarioTable;
        $query = "SELECT * FROM usuarios WHERE cpf = '$cpf';";
        $result = $mysqli->query($query);
        //var_dump($result);
        if ($result) {
            while ($row = $result->fetch_array()) {
               return $row;
            }
        } else {
            return $mysqli->error();
        }
    }

    function getAllUsers() {
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');
        $usuarios = array();
        //$usuarios[1] = 0;
        $query = "SELECT * FROM `$this->usuarioTable` WHERE 1;";
        if ($result = $mysqli->query($query)) {
            while ($row = $result->fetch_object()) {
                $usuarios[] = $row;
            }
            //$usuarios = $result->fetch_object();
            //var_dump($row);
        }
        //$mysqli->close();
        return $usuarios;
    }

    function getAllCompanies() {
        $mysqli = new mysqli('localhost', 'root', '', 'div_soft');
        $empresas = array();
        //$usuarios[1] = 0;
        $query = "SELECT * FROM `$this->companyTable` WHERE 1;";
        if ($result = $mysqli->query($query)) {
            while ($row = $result->fetch_object()) {
                $empresas[] = $row;
            }
            //$usuarios = $result->fetch_object();
            //var_dump($row);
        }
        //$mysqli->close();
        return $empresas;
    }

    function saveProfessor($professor) {
        $ds = DIRECTORY_SEPARATOR;
        include_once $path = $_SERVER['DOCUMENT_ROOT'] . $ds . "DivSoft" . $ds . "Basicas" . $ds . "professor" . $ds . "professor.php";


        //include_once '';
        if ($professor instanceof  Professor){
            $nome = $professor->nome;
            $cpf = $professor->cpf;
            $email = $professor->email;
            $mysqli = new mysqli('localhost', 'root', '', 'div_soft');
            $query = "INSERT INTO ".$this->professorTable."(
                nome, cpf, email) VALUES (
                '$nome', $cpf, '$email')";
            $result = $mysqli->query($query);
            return $result;
        } elseif(is_array($professor)){
            return null;
        }

        return null;
    }

}

?>
